Clustering involves configuring multiple computer systems, also referred to as nodes, to cooperate with each other in order to provide increased availability and/or load balancing of certain services. A cluster is usually viewed as a single entity by clients that use the cluster's services. In a system that is designed to provide high availability, a cluster can continue providing a particular application service to clients even if one of the nodes included in that cluster fails. In other words, programs executing on the cluster can continue to function despite a problem with one node in the cluster.
In order to reduce costs and increase utilization of physical computer systems, various virtual computing techniques are being used to subdivide a single physical computing resource into two or more “virtual machines.” By subdividing a physical computing resource into multiple “virtual machines,” a user can achieve greater utilization of that physical computing resource.
Using traditional clustering methods in systems that employ virtual machines tends to undermine the basic benefits of clustering, virtual computing, or both. For example, in order to use traditional clustering methods with virtual machines, each virtual machine is typically handled as a node within a cluster. However, since several virtual machines may be implemented on the same physical computing resource, this configuration does not provide the fault tolerance normally expected in clustering applications. Instead, the physical computing resource represents a single point of failure.
Furthermore, in order to be able to failover an application from one virtual machine to another, one virtual machine is required to be running in standby mode. Until a failure occurs, the standby virtual machine is using up valuable physical computing resources that could otherwise be used for other purposes. Additionally, additional software licenses may be required for the standby virtual machine, increasing the cost to the user. As these examples show, improved techniques for combining clustering and virtual computing are desired.